From b2aaa9416d958743934f2ec421a11b222db5b1b8 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Sat, 9 Aug 2008 04:20:14 +0000 Subject: [PATCH] gtk/gtkmenushell.c In enter/leave notify events, check that the crossing 2008-08-08 Cody Russell * gtk/gtkmenushell.c * gtk/gtkmenu.c: In enter/leave notify events, check that the crossing mode is not GTK_GRAB, GTK_UNGRAB, or STATE_CHANGED. Fixes regressions in menus caused by bug #56070. svn path=/trunk/; revision=21049 --- ChangeLog | 7 +++++++ gtk/gtkmenu.c | 10 ++++++++++ gtk/gtkmenushell.c | 10 ++++++++++ 3 files changed, 27 insertions(+) diff --git a/ChangeLog b/ChangeLog index 3ebe4fef87..ce17983bc5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-08 Cody Russell + + * gtk/gtkmenushell.c + * gtk/gtkmenu.c: In enter/leave notify events, check that the crossing + mode is not GTK_GRAB, GTK_UNGRAB, or STATE_CHANGED. Fixes regressions + in menus caused by bug #56070. + 2008-08-09 Sven Herzberg Get the gdk+cairo test to pass distcheck, too diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index d8c2e33d95..f3fab0571c 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -3623,6 +3623,11 @@ gtk_menu_enter_notify (GtkWidget *widget, GtkWidget *menu_item; gboolean touchscreen_mode; + if (event->mode == GDK_CROSSING_GTK_GRAB || + event->mode == GDK_CROSSING_GTK_UNGRAB || + event->mode == GDK_CROSSING_STATE_CHANGED) + return TRUE; + g_object_get (gtk_widget_get_settings (widget), "gtk-touchscreen-mode", &touchscreen_mode, NULL); @@ -3694,6 +3699,11 @@ gtk_menu_leave_notify (GtkWidget *widget, GtkMenuItem *menu_item; GtkWidget *event_widget; + if (event->mode == GDK_CROSSING_GTK_GRAB || + event->mode == GDK_CROSSING_GTK_UNGRAB || + event->mode == GDK_CROSSING_STATE_CHANGED) + return TRUE; + menu = GTK_MENU (widget); menu_shell = GTK_MENU_SHELL (widget); diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index f2ca2dcdf0..79a250b341 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -802,6 +802,11 @@ gtk_menu_shell_enter_notify (GtkWidget *widget, { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); + if (event->mode == GDK_CROSSING_GTK_GRAB || + event->mode == GDK_CROSSING_GTK_UNGRAB || + event->mode == GDK_CROSSING_STATE_CHANGED) + return TRUE; + if (menu_shell->active) { GtkWidget *menu_item; @@ -867,6 +872,11 @@ static gint gtk_menu_shell_leave_notify (GtkWidget *widget, GdkEventCrossing *event) { + if (event->mode == GDK_CROSSING_GTK_GRAB || + event->mode == GDK_CROSSING_GTK_GRAB || + event->mode == GDK_CROSSING_STATE_CHANGED) + return TRUE; + if (GTK_WIDGET_VISIBLE (widget)) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); -- 2.30.2